﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CANO.Data.DAOs;

namespace CANO.WebSite.admin
{
	public partial class User : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
            if ((Int32)Session["CurrentRolID"] > 1)
				Response.Redirect("/Index.aspx");

			try
			{
				if (!Page.IsPostBack)
				{
					//Set Session variables
					Session["currentModule"] = "Admin";

					//Fill Data
					this.fillDropDowns();


					string currentMode = Request.QueryString["Mode"].ToString();
					if (currentMode == "New")
					{
						btnCrearUsuario.Visible = true;
					}
					else if (currentMode == "View")
					{
						string currentUser = Request.QueryString["UserID"];
						this.fillData(currentUser);
						this.disableControls();
						btnEditarIR.Visible = true;
					}
					else if (currentMode == "Edit")
					{
						string currentUser = Request.QueryString["UserID"];
						this.fillData(currentUser);
						btnGuardarCambios.Visible = true;
					}
				}
				//Bind Events buttons
				btnCrearUsuario.Click += new EventHandler(btnCrearUsuario_Click);
				btnEditarIR.Click += new EventHandler(btnEditarIR_Click);
				btnGuardarCambios.Click += new EventHandler(btnGuardarCambios_Click);
				btnVolver.ServerClick += new EventHandler(btnVolver_ServerClick);

			}
			catch (Exception)
			{
				throw;
			}
		}

		void btnVolver_ServerClick(object sender, EventArgs e)
		{
			Response.Redirect("/admin/UsersAdmin.aspx");
		}

		void btnGuardarCambios_Click(object sender, EventArgs e)
		{
			try
			{
				UsuarioDAO toUpdateUser = new UsuarioDAO();
				toUpdateUser.UsuarioID = Convert.ToInt32(Request.QueryString["UserID"]);
				toUpdateUser.Nombre = txtNombre.Value;
				toUpdateUser.Apellido = txtApellido.Value;
				toUpdateUser.TelefonoLaboral = txtTelefonoLaboral.Value;
				toUpdateUser.TelefonoPersonal = txtTelefonoPersonal.Value;
				toUpdateUser.Mail = txtMail.Value;
				toUpdateUser.Direccion = txtDireccion.Value;
				toUpdateUser.FechaNacimiento = Convert.ToDateTime(txtFechaNacimiento.Value);
				toUpdateUser.Rol = Convert.ToInt32(ddlRol.SelectedValue);
				toUpdateUser.Zona = Convert.ToInt32(ddlZona.SelectedValue);
				toUpdateUser.UserName = txtUsuario.Value;
				toUpdateUser.Password = txtPassword.Value; //ToDo: Grabar con seguridad
				toUpdateUser.FotoPerfil = ufFotoPerfil.Value;

				toUpdateUser.Update();
				Response.Redirect("/admin/User.aspx?Mode=View&UserID=" + Request.QueryString["UserID"]);
			}
			catch (Exception)
			{
				throw;
			}
		}

		void btnEditarIR_Click(object sender, EventArgs e)
		{
			string currentUser = Request.QueryString["UserID"];
			Response.Redirect("/admin/User.aspx?Mode=Edit&UserID=" + currentUser);
		}

		private void fillData(string currentUser)
		{
			UsuarioDAO currentUserDAO = new UsuarioDAO().getUser(Convert.ToInt32(currentUser));
			txtNombre.Value = currentUserDAO.Nombre;
			txtApellido.Value = currentUserDAO.Apellido;
			txtTelefonoLaboral.Value = currentUserDAO.TelefonoLaboral;
			txtTelefonoPersonal.Value = currentUserDAO.TelefonoPersonal;
			txtMail.Value = currentUserDAO.Mail;
			txtDireccion.Value = currentUserDAO.Direccion;
			txtFechaNacimiento.Value = currentUserDAO.FechaNacimiento.ToString();
			ddlRol.SelectedValue = currentUserDAO.Rol.ToString();
			ddlZona.SelectedValue = currentUserDAO.Zona.Value.ToString();
			txtUsuario.Value = currentUserDAO.UserName;
			txtPassword.Value = currentUserDAO.Password;
			//ufFotoPerfil.Value = currentUserDAO.FotoPerfil; 
		}

		void btnCrearUsuario_Click(object sender, EventArgs e)
		{
			try
			{
				UsuarioDAO newUser = new UsuarioDAO();
				newUser.Nombre = txtNombre.Value;
				newUser.Apellido = txtApellido.Value;
				newUser.TelefonoLaboral = txtTelefonoLaboral.Value;
				newUser.TelefonoPersonal = txtTelefonoPersonal.Value;
				newUser.Mail = txtMail.Value;
				newUser.Direccion = txtDireccion.Value;
				newUser.FechaNacimiento = Convert.ToDateTime(txtFechaNacimiento.Value);
				newUser.Rol = Convert.ToInt32(ddlRol.SelectedValue);
				newUser.Zona = Convert.ToInt32(ddlZona.SelectedValue);
				newUser.UserName = txtUsuario.Value;
				newUser.Password = txtPassword.Value; //ToDo: Grabar con seguridad
				newUser.FotoPerfil = ufFotoPerfil.Value;

				int contactID = newUser.Create();
				Response.Redirect("/admin/User.aspx?Mode=View&UserID=" + contactID.ToString());
			}
			catch (Exception)
			{
				throw;
			}
			
		}

		private void fillDropDowns()
		{
			//Fill ddlRol
			ddlRol.DataSource = RolDAO.getAll();
			ddlRol.DataValueField = "RolID";
			ddlRol.DataTextField = "Rol";
			ddlRol.DataBind();
			ddlRol.Items.Insert(0, "-- Seleccione un Rol --");

			//Fill ddlZona
			ddlZona.DataSource = ZonaDAO.getAll();
			ddlZona.DataValueField = "ZonaID";
			ddlZona.DataTextField = "Zona";
			ddlZona.DataBind();
			ddlZona.Items.Insert(0, "-- Seleccione una Zona --");

		}

		private void disableControls()
		{
			txtNombre.Disabled = true;
			txtApellido.Disabled = true;
			txtTelefonoLaboral.Disabled = true;
			txtTelefonoPersonal.Disabled = true;
			txtMail.Disabled = true;
			txtDireccion.Disabled = true;
			txtFechaNacimiento.Disabled = true;
			ddlRol.Enabled = false;
			ddlZona.Enabled = false;
			txtUsuario.Disabled = true;
			txtPassword.Disabled = true;
			ufFotoPerfil.Disabled = true;
		}
	}
}